import { publicationDecisions, qualityGateResults, reviewFindings } from "@autoscholar/db"; import { asc, desc, eq } from "drizzle-orm"; import { handler, json } from "@/lib/server/api"; import { db } from "@/lib/server/db"; import { requireAdmin } from "@/lib/server/session"; export const runtime = "nodejs"; export const GET = handler(async (req, { params }) => { await requireAdmin(req); const { runId } = (await params) as { runId: string }; const gates = await db() .select() .from(qualityGateResults) .where(eq(qualityGateResults.runId, runId)) .orderBy(desc(qualityGateResults.createdAt), asc(qualityGateResults.gate)); const evaluations = [...new Set(gates.map((g) => g.evaluationId))]; const findings = await db() .select() .from(reviewFindings) .where(eq(reviewFindings.runId, runId)) .orderBy(asc(reviewFindings.round), asc(reviewFindings.severity)); const decisions = await db() .select() .from(publicationDecisions) .where(eq(publicationDecisions.runId, runId)) .orderBy(desc(publicationDecisions.createdAt)); return json({ evaluations: evaluations.map((id) => ({ evaluationId: id, gates: gates.filter((g) => g.evaluationId === id), })), findings, decisions, }); });